import akshare as ak
from enum import Enum

class PriceAdjustment(Enum):
    BACKWARD = "hfq"        # 后复权 Backward Adjustment
    FORWARD = "qfq"         # 前复权 Forward Adjustment
    NONE = "None"           # 不复权

# 上海证券交易所：股票代码通常是6位数字，以6开头，如600000、600001等
# 深圳证券交易所：股票代码也是6位数字，以0开头，如000001、000002等
# 创业板：股票代码以300开头，如300001、300002等
# 科创板：股票代码以688开头，如688001、688002等
# 港股：股票代码通常是5位数字，如00700、00001等
# 美股: 股票代码通常由字母组成，如AAPL、GOOGL等

def convert_stock_code_for_akshare(code):
    if code.isdigit():  # 如果是数字代码
        if len(code) == 6:  # A股代码
            if code.startswith('6'):
                return f'sh{code}'  # 上海证券交易所
            elif code.startswith('0') or code.startswith('3') or code.startswith('688'):
                return f'sz{code}'  # 深圳证券交易所
        elif len(code) == 5:  # 港股代码
            return f'hk{code}'
    elif code.isalpha():  # 如果是字母代码，假设为美股
        return f'us{code}'
    else:
        raise ValueError("Unsupported stock code format")

def fetch_stock_price(code, adj = PriceAdjustment.BACKWARD):
    code_ = convert_stock_code_for_akshare(code)
    stock_zh_a_hist_tx_df = ak.stock_zh_a_hist_tx(symbol=code_, start_date="20200101", end_date="20250704", adjust=adj.value)
    #print(stock_zh_a_hist_tx_df)
    #dump to csv
    stock_zh_a_hist_tx_df.to_csv(f"{code}_stock_price.csv", index=False, encoding='utf-8-sig')
    print(f"股票 {code} 的历史价格数据已保存为 {code}_stock_price.csv")

# 设置股票代码
# 600938 中国海油
# 00883 中国海油.HK
stock_codes = ["600938", "00883"]  # 示例股票代码，根据需要替换为实际的股票代码
for stock_code in stock_codes:
    fetch_stock_price(stock_code)